/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package Bean;

import Dao.AdminDao;
import Dao.HibernateDao;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import model.Recargascodigo;
import util.Utils;

/**
 *
 * @author David
 */
@ManagedBean
@RequestScoped
public class Admin {
    private Recargascodigo recarga;
    private Recargascodigo recarga_aux;
    HibernateDao dao = new HibernateDao<Recargascodigo>();
    AdminDao adminDao = new AdminDao();
    private List<Recargascodigo> lstSinUsar;
    private List<Recargascodigo> lstUsado;

    public Admin() {
        recarga = new Recargascodigo();
        lstSinUsar = adminDao.ListRecargasCodigoSinUsar();
        lstUsado = adminDao.ListRecargasCodigoUsadas();
    }
    
    public void insertarRecarga(){
        if(!valida()){
            return;
        }
        String codigo = verificarCodigo();
        recarga.setId(codigo);
        recarga.setEstado(1);
        recarga.setFechaGenerado(new Date());
        try {
            dao.insertar(recarga);
            recarga = new Recargascodigo();
            Utils.enviarMensajeGlobalValido("Se genero correctamente. El codigo es: "+codigo);
        } catch (Exception e) {
            Utils.enviarMensajeGlobalError("Error inesperado");
        }        
    }
    
    public void eliminarRecarga(){
        dao.eliminar(recarga_aux);
        lstSinUsar = adminDao.ListRecargasCodigoSinUsar();        
    }
    
    public String verificarCodigo(){
        String codigo = Utils.getRandomCodigo();
        if(adminDao.getRecarga(codigo) != null){
            return verificarCodigo();
        }
        return codigo;
    }
    
    public void capturar(Recargascodigo recarga_aux){
        this.recarga_aux = recarga_aux;
    }
    
    public String convertDouble(Double d){
        DecimalFormat df = new DecimalFormat("0.00");
        return df.format(d);
    }
    
    public boolean valida(){
        if(recarga.getMonto() <= 0){
            Utils.enviarMensajeGlobalError("Ingrese un monto mayor a 0");
            return false;
        }
        return true;
    }

    public Recargascodigo getRecarga() {
        return recarga;
    }

    public void setRecarga(Recargascodigo recarga) {
        this.recarga = recarga;
    }        

    public List<Recargascodigo> getLstSinUsar() {
        return lstSinUsar;
    }

    public void setLstSinUsar(List<Recargascodigo> lstSinUsar) {
        this.lstSinUsar = lstSinUsar;
    }

    public List<Recargascodigo> getLstUsado() {
        return lstUsado;
    }

    public void setLstUsado(List<Recargascodigo> lstUsado) {
        this.lstUsado = lstUsado;
    }

    public Recargascodigo getRecarga_aux() {
        return recarga_aux;
    }

    public void setRecarga_aux(Recargascodigo recarga_aux) {
        this.recarga_aux = recarga_aux;
    }
    
}
